package model

import "time"

// Order 表示一个订单
type Order struct {
	ID                string      `gorm:"primaryKey" json:"id"`
	CustomerID        string      `json:"customer_id"`
	DeliveryStationID string      `json:"delivery_station_id"`
	WaveID            *string     `gorm:"size:255" json:"wave_id,omitempty"`
	Items             []OrderItem `gorm:"foreignKey:OrderID" json:"items"`
	Location          Location    `gorm:"embedded" json:"location"`
	Priority          int         `json:"priority"`
	Status            OrderStatus `json:"status"`
	CreateTime        time.Time   `json:"create_time"`
	ReleaseTime       time.Time   `json:"release_time"`
}

// OrderItem 表示订单中的一个商品项
type OrderItem struct {
	ID        uint   `gorm:"primaryKey;autoIncrement;column:id" json:"id"`
	OrderID   string `gorm:"index;column:order_id" json:"order_id"`
	ProductID string `gorm:"column:product_id" json:"product_id"`
	Quantity  int    `gorm:"column:quantity" json:"quantity"`
	SKU       string `gorm:"column:sku" json:"sku"`
}

// OrderStatus 订单状态枚举
type OrderStatus int

const (
	OrderStatusPending OrderStatus = iota
	OrderStatusProcessing
	OrderStatusDelivering
	OrderStatusCompleted
	OrderStatusCancelled
)

// TableName 指定表名
func (Order) TableName() string {
	return "orders"
}

// TableName 指定表名
func (OrderItem) TableName() string {
	return "order_items"
}
